Crate duration_string

source ·
Expand description

duration-string is a library to convert from String to Duration and vice-versa.

Crates.io MIT licensed

Takes a String such as 100ms, 2s, 5m 30s, 1h10m and converts it into a Duration.

Takes a Duration and converts it into String.

The String format is a multiply of [0-9]+(ns|us|ms|[smhdwy])

§Example

String to Duration:

use std::convert::TryFrom;
use duration_string::DurationString;
use std::time::Duration;

let d: Duration = DurationString::try_from(String::from("100ms")).unwrap().into();
assert_eq!(d, Duration::from_millis(100));

// Alternatively
let d: Duration = "100ms".parse::<DurationString>().unwrap().into();
assert_eq!(d, Duration::from_millis(100));

Duration to String:

use std::convert::TryFrom;
use duration_string::*;
use std::time::Duration;

let d: String = DurationString::from(Duration::from_millis(100)).into();
assert_eq!(d, String::from("100ms"));

§Serde support

You can enable serialization/deserialization support by adding the feature serde

  • Add serde feature

    duration-string = { version = "0.3.0", features = ["serde"] }
    
  • Add derive to struct

    use duration_string::DurationString;
    use serde::{Deserialize, Serialize};
    
    #[derive(Serialize, Deserialize)]
    struct Foo {
      duration: DurationString
    }

use duration_string::DurationString; use serde::{Deserialize, Serialize}; use serde_json;

#[derive(Serialize, Deserialize)] struct SerdeSupport { t: DurationString, } let s = SerdeSupport { t: DurationString::from_string(String::from(“1m”)).unwrap(), }; assert_eq!(r#“{“t”:“1m”}“#, serde_json::to_string(&s).unwrap());

Structs§

Enums§

Type Aliases§